package main

import "fmt"

func missingNumber(nums []int) int {
	l, r := 0, len(nums)-1
	site := 0
	m := 0
	for l <= r {
		m = (l + r) / 2
		if nums[m] > m { // l 最终的位置一定是的在target的右边的哪个位置
			r = m - 1
		} else { // r 最终是大于target所在的位置，因为是改变上判断的位置,如果存在的话，r 必然指向最大的target所在的位置;
			l = m + 1
		}
	}
	site = r + 1
	// 判断如果 target 不存在如何解决
	if r >= 0 && nums[r] != r || r < 0 {
		return 0
	}
	return site
}
func main() {
	nums:=[]int{0,1,2,3,4,5,6,7,9}
	fmt.Println(missingNumber(nums))
}
// 二分法，是二分查找的变式，对于二分查找的问题的基础上的修改。
//